#!/bin/bash
# 切换到脚本所在目录
cd "$(dirname "$0")"
# 清理并复制JAR包的组合脚本 - 先清理旧文件，然后复制新的JAR包

# 定义颜色
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
CYAN='\033[0;36m'
GRAY='\033[0;37m'
NC='\033[0m' # 无颜色

# 定义脚本根目录、项目根目录
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$(dirname "$(dirname "$SCRIPT_DIR")")" && pwd)"
echo -e "${CYAN}脚本位置: ${SCRIPT_DIR}${NC}"
echo -e "${CYAN}项目根目录: ${PROJECT_ROOT}${NC}"

# =================== 第一阶段：清理 JAR 文件 ===================

# 计数器
TOTAL_DELETED_FILES=0
TOTAL_SCANNED_DIRS=0

# 输出脚本开始执行的信息
echo -e "\n${YELLOW}[第1阶段] 开始清理项目中的jar文件...${NC}"
echo -e "${GRAY}----------------------------------------${NC}"

# 查找所有名为jar的目录
find "$SCRIPT_DIR" -type d -name "jar" | while read -r jar_dir; do
    TOTAL_SCANNED_DIRS=$((TOTAL_SCANNED_DIRS + 1))
    
    # 计算相对路径
    REL_PATH="${jar_dir#$SCRIPT_DIR/}"
    
    echo -e "${CYAN}检查目录: ${REL_PATH}${NC}"
    
    # 获取目录中的所有jar文件
    jar_files=($(find "$jar_dir" -type f -name "*.jar"))
    
    if [ ${#jar_files[@]} -eq 0 ]; then
        echo -e "  └─ ${GRAY}未发现jar文件${NC}"
        continue
    fi
    
    # 显示找到的jar文件
    echo -e "  └─ ${YELLOW}发现 ${#jar_files[@]} 个jar文件:${NC}"
    
    for file in "${jar_files[@]}"; do
        file_name=$(basename "$file")
        file_size=$(du -h "$file" | cut -f1)
        
        echo -e "      - ${RED}${file_name} (${file_size})${NC}"
        
        # 删除jar文件
        rm -f "$file"
        TOTAL_DELETED_FILES=$((TOTAL_DELETED_FILES + 1))
    done
    
    echo -e "  └─ ${GREEN}已删除所有jar文件${NC}"
done

# 显示清理结果
echo -e "${GRAY}----------------------------------------${NC}"
echo -e "${GREEN}清理完成!${NC}"
echo -e "${CYAN}共扫描 ${TOTAL_SCANNED_DIRS} 个jar目录${NC}"
echo -e "${CYAN}共删除 ${TOTAL_DELETED_FILES} 个jar文件${NC}"

# =================== 第二阶段：复制 JAR 文件 ===================

# 计数器
TOTAL_COPIED_FILES=0

# 输出脚本开始执行的信息
echo -e "\n${YELLOW}[第2阶段] 开始拷贝JAR包到K8S部署目录...${NC}"
echo -e "${GRAY}----------------------------------------${NC}"

# 定义源模块数组和目标目录数组（替代关联数组）
SOURCE_MODULES=(
    "hello-auth" 
    "hello-gateway"
    "hello-modules/hello-system"
    "hello-modules/hello-gen"
    "hello-modules/hello-job"
    "hello-modules/hello-file"
    "hello-modules/hello-device"
    "hello-modules/hello-product"
    "hello-modules/hello-connect"
    "hello-modules/hello-data"
    "hello-visual/hello-monitor"
)

TARGET_DIRS=(
    "auth"
    "gateway"
    "modules/system"
    "modules/gen"
    "modules/job"
    "modules/file"
    "modules/device"
    "modules/product"
    "modules/connect"
    "modules/data"
    "visual/monitor"
)

# 遍历模块数组
for i in "${!SOURCE_MODULES[@]}"; do
    SOURCE_MODULE="${SOURCE_MODULES[$i]}"
    TARGET_MODULE="${TARGET_DIRS[$i]}"
    
    TARGET_DIR="${SCRIPT_DIR}/${TARGET_MODULE}/jar"
    SOURCE_DIR="${PROJECT_ROOT}/${SOURCE_MODULE}/target"
    
    # 确保源目录存在
    if [ ! -d "$SOURCE_DIR" ]; then
        echo -e "${YELLOW}跳过 $SOURCE_MODULE : 源目录不存在${NC}"
        continue
    fi
    
    # 确保目标目录存在
    if [ ! -d "$TARGET_DIR" ]; then
        mkdir -p "$TARGET_DIR"
        echo -e "${GRAY}创建目录 ${TARGET_MODULE}/jar${NC}"
    fi
    
    # 查找源目录中的jar文件(排除original后缀的)
    JAR_FILES=($(find "$SOURCE_DIR" -maxdepth 1 -name "*.jar" ! -name "*.original" -type f))
    
    if [ ${#JAR_FILES[@]} -eq 0 ]; then
        echo -e "${YELLOW}模块 $SOURCE_MODULE : 未找到JAR文件${NC}"
        continue
    fi
    
    for JAR in "${JAR_FILES[@]}"; do
        JAR_NAME=$(basename "$JAR")
        TARGET_PATH="${TARGET_DIR}/${JAR_NAME}"
        
        # 获取文件大小（MB）
        FILE_SIZE=$(du -m "$JAR" | cut -f1)
        
        # 复制文件
        cp "$JAR" "$TARGET_PATH"
        
        if [ $? -eq 0 ]; then
            echo -e "${GREEN}✓ 已复制: ${JAR_NAME} (${FILE_SIZE} MB) -> ${TARGET_MODULE}/jar${NC}"
            TOTAL_COPIED_FILES=$((TOTAL_COPIED_FILES + 1))
        else
            echo -e "${RED}✗ 复制失败: ${JAR_NAME}${NC}"
        fi
    done
done

# 显示复制结果
echo -e "\n${GRAY}----------------------------------------${NC}"
echo -e "${GREEN}操作完成!${NC}"
echo -e "${CYAN}共删除 ${TOTAL_DELETED_FILES} 个旧JAR文件${NC}"
echo -e "${CYAN}共复制 ${TOTAL_COPIED_FILES} 个新JAR文件到K8S部署目录${NC}"

# 按任意键退出
echo -e "\n${GRAY}按Enter键退出...${NC}"
read -r 